package edu.tfh.s2.ehkbot.gerete.aktoren.simulation;

import edu.tfh.s2.ehkbot.EHKBotMain;
import edu.tfh.s2.ehkbot.daten.Protokoll;
import edu.tfh.s2.ehkbot.gerete.EHKBot.EHKBotStatus;
import edu.tfh.s2.ehkbot.gerete.aktoren.MotorAktor.MotorAktorState;

/**
 * Impamentiert den Zustand Deaktiviert und Simulation (Dieser State Blockiert, bis der MotorAktor wieder
 * Aktiviertwird)
 * 
 * @author s2zehn
 */
public class MotorAktorDeaktiviereBlockiertStateSimulation implements MotorAktorState {

	private double grad;

	/**
	 * @see edu.tfh.s2.ehkbot.gerete.aktoren.MotorAktor.MotorAktorState#drehe(double, double)
	 */
	@Override
	public void drehe(double grad, double gradPerSec) {
		while (EHKBotMain.getInstance().getEHKBot().getStatus() == EHKBotStatus.FAHRBETRIEBEINGESTELT) {
			try {
				Thread.sleep(10);
			} catch (InterruptedException e) {
			}
		}
	}

	/**
	 * @see edu.tfh.s2.ehkbot.gerete.aktoren.MotorAktor.MotorAktorState#getDrehung()
	 */
	@Override
	public double getDrehung() {
		return grad;
	}

	/**
	 * @see edu.tfh.s2.ehkbot.gerete.aktoren.MotorAktor.MotorAktorState#getGradPerSec()
	 */
	@Override
	public double getGradPerSec() {
		return 0;
	}

	/**
	 * @see edu.tfh.s2.ehkbot.gerete.aktoren.MotorAktor.MotorAktorState#getMaxSpeed()
	 */
	@Override
	public double getMaxSpeed() {
		return 0;
	}

	/**
	 * @see edu.tfh.s2.ehkbot.gerete.aktoren.MotorAktor.MotorAktorState#istAktiviert()
	 */
	@Override
	public boolean istAktiviert() {
		return false;
	}

	/**
	 * @param grad
	 */
	public void setGrad(double grad) {
		this.grad = grad;
	}

	/**
	 * @see edu.tfh.s2.ehkbot.gerete.aktoren.MotorAktor.MotorAktorState#stope()
	 */
	@Override
	public void stope() {
		Protokoll.getInstanc().protokolliere(
			"MotorAktorDeaktiviereStateSimulation",
			"stop wurde aufgerufen, obwohl MotorAktor Deaktivert ist",
			2,
			Protokoll.TYP.WARNUNG);
	}

	@Override
	public void waitUntilDone() {
	}

}
